home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / security / Policy.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  6.0 KB  |  252 lines

  1. package java.security;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.WeakHashMap;
  5. import sun.security.jca.GetInstance;
  6. import sun.security.provider.PolicyFile;
  7. import sun.security.util.Debug;
  8. import sun.security.util.SecurityConstants;
  9.  
  10. public abstract class Policy {
  11.    public static final PermissionCollection UNSUPPORTED_EMPTY_COLLECTION = new UnsupportedEmptyCollection();
  12.    private static Policy policy;
  13.    private static final Debug debug = Debug.getInstance("policy");
  14.    private WeakHashMap pdMapping;
  15.  
  16.    static boolean isSet() {
  17.       return policy != null;
  18.    }
  19.  
  20.    private static void checkPermission(String var0) {
  21.       SecurityManager var1 = System.getSecurityManager();
  22.       if (var1 != null) {
  23.          var1.checkPermission(new SecurityPermission("createPolicy." + var0));
  24.       }
  25.  
  26.    }
  27.  
  28.    public static Policy getPolicy() {
  29.       SecurityManager var0 = System.getSecurityManager();
  30.       if (var0 != null) {
  31.          var0.checkPermission(SecurityConstants.GET_POLICY_PERMISSION);
  32.       }
  33.  
  34.       return getPolicyNoCheck();
  35.    }
  36.  
  37.    static synchronized Policy getPolicyNoCheck() {
  38.       if (policy == null) {
  39.          Object var0 = null;
  40.          String var5 = (String)AccessController.doPrivileged(new 1());
  41.          if (var5 == null) {
  42.             var5 = "sun.security.provider.PolicyFile";
  43.          }
  44.  
  45.          try {
  46.             policy = (Policy)Class.forName(var5).newInstance();
  47.          } catch (Exception var4) {
  48.             policy = new PolicyFile();
  49.             Policy var3 = (Policy)AccessController.doPrivileged(new 2(var5));
  50.             if (var3 != null) {
  51.                policy = var3;
  52.             } else if (debug != null) {
  53.                debug.println("using sun.security.provider.PolicyFile");
  54.             }
  55.          }
  56.       }
  57.  
  58.       return policy;
  59.    }
  60.  
  61.    public static void setPolicy(Policy var0) {
  62.       SecurityManager var1 = System.getSecurityManager();
  63.       if (var1 != null) {
  64.          var1.checkPermission(new SecurityPermission("setPolicy"));
  65.       }
  66.  
  67.       if (var0 != null) {
  68.          initPolicy(var0);
  69.       }
  70.  
  71.       synchronized(Policy.class) {
  72.          policy = var0;
  73.       }
  74.    }
  75.  
  76.    private static void initPolicy(Policy var0) {
  77.       ProtectionDomain var1 = (ProtectionDomain)AccessController.doPrivileged(new 3(var0));
  78.       Object var2 = null;
  79.       synchronized(var0) {
  80.          if (var0.pdMapping == null) {
  81.             var0.pdMapping = new WeakHashMap();
  82.          }
  83.       }
  84.  
  85.       if (var1.getCodeSource() != null) {
  86.          if (isSet()) {
  87.             var2 = policy.getPermissions(var1);
  88.          }
  89.  
  90.          if (var2 == null) {
  91.             var2 = new Permissions();
  92.             ((PermissionCollection)var2).add(SecurityConstants.ALL_PERMISSION);
  93.          }
  94.  
  95.          synchronized(var0.pdMapping) {
  96.             var0.pdMapping.put(var1, var2);
  97.          }
  98.       }
  99.  
  100.    }
  101.  
  102.    public static Policy getInstance(String var0, Parameters var1) throws NoSuchAlgorithmException {
  103.       checkPermission(var0);
  104.  
  105.       try {
  106.          GetInstance.Instance var2 = GetInstance.getInstance("Policy", PolicySpi.class, var0, var1);
  107.          return new PolicyDelegate((PolicySpi)var2.impl, var2.provider, var0, var1, (1)null);
  108.       } catch (NoSuchAlgorithmException var3) {
  109.          return handleException(var3);
  110.       }
  111.    }
  112.  
  113.    public static Policy getInstance(String var0, Parameters var1, String var2) throws NoSuchProviderException, NoSuchAlgorithmException {
  114.       if (var2 != null && var2.length() != 0) {
  115.          checkPermission(var0);
  116.  
  117.          try {
  118.             GetInstance.Instance var3 = GetInstance.getInstance("Policy", PolicySpi.class, var0, var1, var2);
  119.             return new PolicyDelegate((PolicySpi)var3.impl, var3.provider, var0, var1, (1)null);
  120.          } catch (NoSuchAlgorithmException var4) {
  121.             return handleException(var4);
  122.          }
  123.       } else {
  124.          throw new IllegalArgumentException("missing provider");
  125.       }
  126.    }
  127.  
  128.    public static Policy getInstance(String var0, Parameters var1, Provider var2) throws NoSuchAlgorithmException {
  129.       if (var2 == null) {
  130.          throw new IllegalArgumentException("missing provider");
  131.       } else {
  132.          checkPermission(var0);
  133.  
  134.          try {
  135.             GetInstance.Instance var3 = GetInstance.getInstance("Policy", PolicySpi.class, var0, var1, var2);
  136.             return new PolicyDelegate((PolicySpi)var3.impl, var3.provider, var0, var1, (1)null);
  137.          } catch (NoSuchAlgorithmException var4) {
  138.             return handleException(var4);
  139.          }
  140.       }
  141.    }
  142.  
  143.    private static Policy handleException(NoSuchAlgorithmException var0) throws NoSuchAlgorithmException {
  144.       Throwable var1 = var0.getCause();
  145.       if (var1 instanceof IllegalArgumentException) {
  146.          throw (IllegalArgumentException)var1;
  147.       } else {
  148.          throw var0;
  149.       }
  150.    }
  151.  
  152.    public Provider getProvider() {
  153.       return null;
  154.    }
  155.  
  156.    public String getType() {
  157.       return null;
  158.    }
  159.  
  160.    public Parameters getParameters() {
  161.       return null;
  162.    }
  163.  
  164.    public PermissionCollection getPermissions(CodeSource var1) {
  165.       return UNSUPPORTED_EMPTY_COLLECTION;
  166.    }
  167.  
  168.    public PermissionCollection getPermissions(ProtectionDomain var1) {
  169.       Object var2 = null;
  170.       if (var1 == null) {
  171.          return new Permissions();
  172.       } else {
  173.          if (this.pdMapping == null) {
  174.             initPolicy(this);
  175.          }
  176.  
  177.          PermissionCollection var9;
  178.          synchronized(this.pdMapping) {
  179.             var9 = (PermissionCollection)this.pdMapping.get(var1);
  180.          }
  181.  
  182.          if (var9 != null) {
  183.             Permissions var3 = new Permissions();
  184.             synchronized(var9) {
  185.                Enumeration var5 = var9.elements();
  186.  
  187.                while(var5.hasMoreElements()) {
  188.                   var3.add((Permission)var5.nextElement());
  189.                }
  190.  
  191.                return var3;
  192.             }
  193.          } else {
  194.             var9 = this.getPermissions(var1.getCodeSource());
  195.             if (var9 == null || var9 == UNSUPPORTED_EMPTY_COLLECTION) {
  196.                var9 = new Permissions();
  197.             }
  198.  
  199.             this.addStaticPerms(var9, var1.getPermissions());
  200.             return var9;
  201.          }
  202.       }
  203.    }
  204.  
  205.    private void addStaticPerms(PermissionCollection var1, PermissionCollection var2) {
  206.       if (var2 != null) {
  207.          synchronized(var2) {
  208.             Enumeration var4 = var2.elements();
  209.  
  210.             while(var4.hasMoreElements()) {
  211.                var1.add((Permission)var4.nextElement());
  212.             }
  213.          }
  214.       }
  215.  
  216.    }
  217.  
  218.    public boolean implies(ProtectionDomain var1, Permission var2) {
  219.       if (this.pdMapping == null) {
  220.          initPolicy(this);
  221.       }
  222.  
  223.       PermissionCollection var3;
  224.       synchronized(this.pdMapping) {
  225.          var3 = (PermissionCollection)this.pdMapping.get(var1);
  226.       }
  227.  
  228.       if (var3 != null) {
  229.          return var3.implies(var2);
  230.       } else {
  231.          var3 = this.getPermissions(var1);
  232.          if (var3 == null) {
  233.             return false;
  234.          } else {
  235.             synchronized(this.pdMapping) {
  236.                this.pdMapping.put(var1, var3);
  237.             }
  238.  
  239.             return var3.implies(var2);
  240.          }
  241.       }
  242.    }
  243.  
  244.    public void refresh() {
  245.    }
  246.  
  247.    // $FF: synthetic method
  248.    static Debug access$000() {
  249.       return debug;
  250.    }
  251. }
  252.